<?php
/**
 * 缓存组件
 * @author chenchao
 * @see http://www.achao.org
 * 
 */


class Cache
{
    private static $instance = array();

    /**
     * 生成 Cache 单例
     *
     * @param string $cacheType :自定义缓存类型,为空表示采用系统默认;
     *                           可选择的类型有:"memcache" "file" "apc" "xcache"
     * @return cache object
     */
    static function getInstance($cacheType='')
    {
        if (!isset($instance[$cacheType]) || null === self::$instance[$cacheType])
        {
            $CType = ucfirst($cacheType ? $cacheType : 'file');
            // ucfirst:将字符串第一个字符改大写
            $cacheObjClass = 'Cache_'.$CType;
            //加载对应的缓存组件
            $cacheFile = dirname(__FILE__)."/cache/".$CType.'.php';
            if(file_exists($cacheFile)) include_once($cacheFile);
            if(!class_exists($cacheObjClass))
            {
                //写日志
                throw new Exception('缓存类型不存在');
            }
            self::$instance[$cacheType] = new $cacheObjClass();
            return self::$instance[$cacheType];
        }
        else
        {
            return self::$instance[$cacheType];
        }
    }
}
